home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / program / nwlib15.zip / DEMO.ZIP / OBJEDIT.PAS < prev    next >
Pascal/Delphi Source File  |  1996-03-03  |  10KB  |  329 lines

  1. unit Objedit;
  2.  
  3. interface
  4.  
  5. uses
  6.     WinTypes,
  7.     WinProcs,
  8.     Classes,
  9.     Graphics,
  10.     Forms,
  11.     Controls,
  12.     Buttons,
  13.     StdCtrls,
  14.     ExtCtrls,
  15.     dialogs,
  16.     NwProp,
  17.     Nwtools,
  18.     Nwlib;
  19.  
  20. type
  21.   TwinObjEdit = class(TForm)
  22.     bSave: TBitBtn;
  23.     bCancel: TBitBtn;
  24.     NWLib1: TNWLib;
  25.     NWTools1: TNWTools;
  26.     NWProp1: TNWProp;
  27.     bGroups: TBitBtn;
  28.     bRights: TBitBtn;
  29.     bMembers: TBitBtn;
  30.     dataPanel: TPanel;
  31.     Label1: TLabel;
  32.     Label2: TLabel;
  33.     label3: TLabel;
  34.     fullName: TEdit;
  35.     objName: TEdit;
  36.     readFlags: TRadioGroup;
  37.     writeFlags: TRadioGroup;
  38.     objType: TRadioGroup;
  39.     duration: TRadioGroup;
  40.     password: TEdit;
  41.     bProperties: TBitBtn;
  42.     procedure bSaveClick(Sender: TObject);
  43.     procedure objTypeClick(Sender: TObject);
  44.     procedure bMembersClick(Sender: TObject);
  45.     procedure FormShow(Sender: TObject);
  46.     procedure bPropertiesClick(Sender: TObject);
  47.     procedure bGroupsClick(Sender: TObject);
  48.     procedure bRightsClick(Sender: TObject);
  49.   private
  50.     { Private declarations }
  51.   public
  52.     { Public declarations }
  53.     creating : boolean ;
  54.   end;
  55.  
  56. var
  57.   winObjEdit: TwinObjEdit;
  58.  
  59. implementation
  60.  
  61. {$R *.DFM}
  62.  
  63. uses
  64.   list ;
  65.  
  66. procedure TwinObjEdit.FormShow(Sender: TObject);
  67.   var
  68.     canRead       : boolean ;
  69.     canWrite      : boolean ;
  70.     hasProperties : boolean ;
  71.     readSecurity  : TNWFlags ;
  72.     writeSecurity : TNWFlags ;
  73.   begin
  74.     if (not creating) then
  75.       begin
  76.         objName.enabled := false ;
  77.         compareObjectAccessRights(getPrimaryServerID,
  78.                                   objName.text,
  79.                                   canRead,
  80.                                   canWrite) ;
  81.         getObjectInfo(getPrimaryServerID,
  82.                       objName.text,
  83.                       hasProperties,
  84.                       readSecurity,
  85.                       writeSecurity) ;
  86.  
  87.        { show object read rights }
  88.         case readSecurity of
  89.           BS_ANY_READ    :
  90.             readFlags.itemIndex := 0 ;
  91.           BS_LOGGED_READ :
  92.             readFlags.itemIndex := 1 ;
  93.           BS_OBJECT_READ :
  94.             readFlags.itemIndex := 2 ;
  95.         else
  96.           readFlags.itemIndex := 3 ;
  97.         end;
  98.         { show object write rights }
  99.         case writeSecurity of
  100.           BS_ANY_WRITE    :
  101.             writeFlags.itemIndex := 0 ;
  102.           BS_LOGGED_WRITE :
  103.             writeFlags.itemIndex := 1 ;
  104.           BS_OBJECT_WRITE :
  105.             writeFlags.itemIndex := 2 ;
  106.         else
  107.           writeFlags.itemIndex := 3 ;
  108.         end;
  109.  
  110.         { set Object Type }
  111.         objType.itemIndex := 0 ;
  112.         case getObjType(0,objName.text) of
  113.           nw_user :
  114.             begin
  115.               bGroups.enabled := true ;
  116.               objType.itemIndex := 0 ;
  117.             end;
  118.           nw_group :
  119.             begin
  120.               objType.itemIndex := 1 ;
  121.             end;
  122.           nw_printQ :
  123.             begin
  124.               objType.itemIndex := 2 ;
  125.             end;
  126.           nw_printServer :
  127.             begin
  128.               objType.itemIndex := 3 ;
  129.             end;
  130.         end;
  131.  
  132.         {enable/disable buttons, etc. on object type }
  133.         objTypeClick(sender) ;
  134.  
  135.         { check object rights -
  136.            disable all entry fields if no obj write ability }
  137.         datapanel.enabled := canWrite ;
  138.       end ; 
  139.   end;
  140.  
  141. procedure TwinObjEdit.bSaveClick(Sender: TObject);
  142.   var
  143.     oType       : TObjType ;
  144.     readAccess  : TNWFlags ;
  145.     writeAccess : TNWFlags ;
  146.   begin
  147.     if YesNoBox('Saving Object Information;;Are You Sure') then
  148.       begin
  149.         case objType.itemIndex of
  150.           1: oType := nw_group ;
  151.           2: oType := nw_printQ ;
  152.           3: oType := nw_printServer ;
  153.         else
  154.           oType := nw_user;
  155.         end;
  156.         { Convert Read Access Level }
  157.         case readflags.itemIndex of
  158.           0: readAccess := BS_ANY_READ ;
  159.           2: readAccess := BS_OBJECT_READ ;
  160.           3: readAccess := BS_SUPER_READ ;
  161.         else
  162.           readAccess := BS_LOGGED_READ ;
  163.         end;
  164.         { Convert Write Access Level }
  165.         case writeflags.itemIndex of
  166.           0: writeAccess := BS_ANY_WRITE ;
  167.           2: writeAccess := BS_OBJECT_WRITE ;
  168.           3: writeAccess := BS_SUPER_WRITE ;
  169.         else
  170.           writeAccess := BS_LOGGED_WRITE ;
  171.         end;
  172.         if creating then
  173.           begin
  174.             { creating new object }
  175.             if createObject(getPrimaryServerID,
  176.                             objName.text,
  177.                             oType,
  178.                             fullName.text,
  179.                             password.text,
  180.                             (duration.itemIndex = 0),
  181.                             readAccess,
  182.                             writeAccess) then
  183.               begin
  184.                 okBox('Object Created Successfully') ;
  185.                 close;
  186.               end
  187.             else
  188.               alertBox('Error Creating Object') ;
  189.           end
  190.         else
  191.           { modifying existing object }
  192.           begin
  193.              writeItemProperty(getPrimaryServerID,
  194.                                objName.text,
  195.                                oType,
  196.                                'IDENTIFICATION',
  197.                                fullName.text) ; {remember, some objTypes 
  198.                                                  have no identification property}
  199.              if changeObjectSecurity(getPrimaryServerID,
  200.                                      objName.text,
  201.                                      readAccess,
  202.                                      writeAccess) then
  203.                begin
  204.                  okBox('Object Saved Successfully') ;
  205.                  close;
  206.                end
  207.              else
  208.                alertBox('Error Writing To Object;;Check Access Rights') ;
  209.           end;
  210.       end;
  211.   end;
  212.  
  213. procedure TWinObjEdit.objTypeClick(Sender: TObject);
  214.   begin
  215.     { never on new objects }
  216.  
  217.     { only for new objects }
  218.     if (not creating) then
  219.       begin
  220.         bProperties.enabled  := true  ;
  221.         { can't change existing object's type or duration }
  222.         duration.enabled     := false ;
  223.         objType.enabled      := false ;
  224.       end;
  225.  
  226.     case objType.itemIndex of
  227.       0:  {user object }
  228.         begin
  229.           readFlags.itemIndex  := 1 ;     { logged-in read }
  230.           writeFlags.itemIndex := 2 ;    { object write }
  231.           bgroups.enabled      := (not creating) ;
  232.           password.enabled     := (not creating) ;
  233.           bRights.enabled      := (not creating) ;
  234.           bMembers.enabled     := false ;
  235.         end;
  236.       1:  { Group Object }
  237.         begin
  238.           readFlags.itemIndex  := 1 ;     { logged-in read }
  239.           writeFlags.itemIndex := 3 ;    { super write }
  240.           bMembers.enabled     := (not creating) ;
  241.           bRights.enabled      := (not creating) ;
  242.           bGroups.enabled      := false ;
  243.           password.enabled     := false ;
  244.         end;
  245.       2:  { PrintQ Object }
  246.         begin
  247.           readFlags.itemIndex  := 1 ;     { logged-in read }
  248.           writeFlags.itemIndex := 3 ;    { super write }
  249.           password.enabled     := false ;
  250.           fullName.enabled     := false ;
  251.           bMembers.enabled     := false ;
  252.           bRights.enabled      := false ;
  253.           bGroups.enabled      := false ;
  254.         end;
  255.       3:  { Print Server Object }
  256.         begin
  257.           readFlags.itemIndex  := 1 ;     { logged-in read }
  258.           writeFlags.itemIndex := 3 ;    { super write }
  259.           password.enabled     := (not creating) ;
  260.           bMembers.enabled     := false ;
  261.           bRights.enabled      := false ;
  262.           bGroups.enabled      := false ;
  263.         end;
  264.     end;
  265.   end;
  266.  
  267. procedure TwinObjEdit.bMembersClick(Sender: TObject);
  268.   begin
  269.     try
  270.       application.createForm(TWinList,winList) ;
  271.       winList.inObjectName := objName.text ;
  272.       winList.inServer     := getPrimaryServerID ;
  273.       { set the form's onShow event }
  274.       winList.onShow       := winList.